外观
5. Docker 基础操作
Docker 命令体系
Docker 提供了丰富的命令行工具,支持容器生命周期管理、镜像操作、仓库交互等多种功能。本文档按功能分类介绍常用命令。
5.1 Docker 命令分类概览
5.2 容器管理命令
容器生命周期
容器管理是 Docker 最核心的操作,涉及容器的创建、运行、停止、删除等全生命周期管理。
5.2.1 容器创建与运行
bash
# 创建并运行容器(核心命令)
# 常用选项:
# -d: 后台运行(detached mode)
# --rm: 容器退出时自动删除
# --name: 指定容器名称
# -p: 端口映射 (host_port:container_port)
# -v: 挂载数据卷 (host_path:container_path)
# -e: 设置环境变量
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 示例:运行 Nginx 容器
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 示例:运行临时容器并自动清理
docker run --rm -it ubuntu:latest /bin/bash1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
5.2.2 容器状态控制
bash
# 启动已停止的容器
docker start CONTAINER_NAME [CONTAINER_NAME...]
# 停止正在运行的容器(优雅停止,等待 10 秒)
docker stop CONTAINER_NAME [CONTAINER_NAME...]
# 立即停止容器(强制终止)
docker kill CONTAINER_NAME [CONTAINER_NAME...]
# 重启容器
docker restart CONTAINER_NAME [CONTAINER_NAME...]
# 暂停容器(冻结所有进程)
docker pause CONTAINER_NAME
# 恢复暂停的容器
docker unpause CONTAINER_NAME1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
5.2.3 容器信息查看
bash
# 列出运行中的容器
# -a: 显示所有容器(包括停止的)
# -q: 只显示容器 ID
# --format: 自定义输出格式
docker ps [OPTIONS]
# 示例:查看所有容器
docker ps -a
# 查看容器日志
# -f: 跟随日志输出(类似 tail -f)
# --tail: 显示最后 N 行
docker logs [OPTIONS] CONTAINER_NAME
# 查看容器详细信息(JSON 格式)
docker inspect CONTAINER_NAME
# 查看容器内运行的进程
docker top CONTAINER_NAME
# 实时监控容器资源使用
docker stats [CONTAINER_NAME...]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
5.2.4 容器内部操作
bash
# 在运行的容器中执行命令
# -i: 保持标准输入打开
# -t: 分配伪终端
# --user: 指定用户
docker exec [OPTIONS] CONTAINER_NAME COMMAND [ARG...]
# 示例:进入容器 shell
docker exec -it my-nginx /bin/bash
# 从容器复制文件到宿主机
docker cp CONTAINER_NAME:SRC_PATH DEST_PATH
# 从宿主机复制文件到容器
docker cp SRC_PATH CONTAINER_NAME:DEST_PATH1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
5.2.5 容器清理
bash
# 删除停止的容器
# -f: 强制删除运行中的容器
docker rm [OPTIONS] CONTAINER_NAME [CONTAINER_NAME...]
# 删除所有停止的容器
docker rm $(docker ps -aq)
# 停止并删除所有容器
docker stop $(docker ps -q) && docker rm $(docker ps -aq)1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
容器删除风险
删除运行中的容器会强制终止进程,可能导致数据丢失。建议先停止容器再删除。
5.3 镜像管理命令
镜像层级结构
Docker 镜像是分层的,只读文件系统。理解镜像的构建、传输和存储对高效使用 Docker 至关重要。
5.3.1 镜像获取
bash
# 从仓库拉取镜像
# --all-tags: 拉取所有标签的镜像
docker pull [OPTIONS] IMAGE[:TAG|@DIGEST]
# 示例:拉取最新 Nginx 镜像
docker pull nginx:latest
# 从 Dockerfile 构建镜像
# -t: 指定镜像标签 (name:tag)
# -f: 指定 Dockerfile 路径
# --build-arg: 传递构建参数
docker build [OPTIONS] PATH
# 示例:构建应用镜像
docker build -t my-app:v1.0 .
# 从 tar 文件加载镜像
docker load [OPTIONS]
# 示例:从文件加载镜像
docker load -i my-image.tar1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5.3.2 镜像信息查看
bash
# 列出本地镜像
# -a: 显示所有镜像(包括中间层)
# -q: 只显示镜像 ID
docker images [OPTIONS] [REPOSITORY[:TAG]]
# 查看镜像详细信息
docker inspect IMAGE_NAME
# 查看镜像历史(构建层级)
docker history IMAGE_NAME1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
5.3.3 镜像操作
bash
# 为镜像创建新标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 示例:为 nginx 镜像创建新标签
docker tag nginx:latest my-nginx:v1.0
# 将镜像保存为 tar 文件
docker save [OPTIONS] IMAGE [IMAGE...]
# 示例:保存镜像到文件
docker save -o nginx.tar nginx:latest1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
5.3.4 镜像清理
bash
# 删除镜像
# -f: 强制删除(即使被容器使用)
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 删除所有悬空镜像(dangling images)
docker image prune
# 删除未使用的镜像
docker image prune -a1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
镜像清理技巧
使用 docker image prune -a 可以清理未使用的镜像,释放磁盘空间。但谨慎使用,可能删除有用的镜像。
5.4 仓库管理命令
仓库认证
大多数 Docker 仓库需要认证,私有仓库必须先登录才能推送镜像。
5.4.1 仓库认证
bash
# 登录到 Docker 仓库
# 默认登录 Docker Hub
docker login [OPTIONS] [SERVER]
# 示例:登录私有仓库
docker login my-registry.com
# 退出仓库登录
docker logout [SERVER]1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
5.4.2 镜像传输
bash
# 推送镜像到仓库
# 镜像名必须包含仓库地址
docker push [OPTIONS] IMAGE[:TAG]
# 示例:推送镜像到 Docker Hub
docker push myuser/my-app:v1.0
# 在仓库中搜索镜像
docker search [OPTIONS] TERM
# 示例:搜索 Nginx 相关镜像
docker search nginx1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
5.5 网络管理命令
Docker 网络模式
Docker 支持多种网络模式:bridge(默认)、host、overlay、macvlan、none。每种模式适用于不同的场景。
5.5.1 网络操作
bash
# 创建网络
# -d: 指定驱动(bridge/overlay/host/macvlan)
docker network create [OPTIONS] NETWORK_NAME
# 示例:创建桥接网络
docker network create --driver bridge my-network
# 列出网络
docker network ls
# 查看网络详细信息
docker network inspect NETWORK_NAME
# 将容器连接到网络
docker network connect NETWORK_NAME CONTAINER_NAME
# 从网络断开容器
docker network disconnect NETWORK_NAME CONTAINER_NAME
# 删除网络
docker network rm NETWORK_NAME1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5.6 数据卷管理命令
数据持久化
数据卷是 Docker 持久化数据的推荐方式,比绑定挂载更安全、更易管理。
5.6.1 卷操作
bash
# 创建数据卷
docker volume create [OPTIONS] VOLUME_NAME
# 列出数据卷
docker volume ls
# 查看卷详细信息
docker volume inspect VOLUME_NAME
# 删除数据卷
docker volume rm VOLUME_NAME
# 清理未使用的数据卷
docker volume prune1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
数据卷删除
删除数据卷会永久丢失数据。请确保数据已备份或不再需要。
5.7 集群管理命令(Swarm)
Docker Swarm
Docker Swarm 是 Docker 内置的容器编排工具,提供集群管理和服务部署功能。
5.7.1 Swarm 管理
bash
# 初始化 Swarm 集群
docker swarm init [OPTIONS]
# 加入现有 Swarm 集群
docker swarm join [OPTIONS] HOST:PORT
# 离开 Swarm 集群
docker swarm leave [OPTIONS]
# 查看 Swarm 状态
docker node ls1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
5.7.2 服务管理
bash
# 创建服务
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
# 列出服务
docker service ls
# 查看服务详细信息
docker service inspect SERVICE_NAME
# 扩展服务副本
docker service scale SERVICE_NAME=REPLICAS
# 更新服务
docker service update [OPTIONS] SERVICE_NAME
# 删除服务
docker service rm SERVICE_NAME1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
5.8 系统管理命令
系统监控
定期监控 Docker 系统状态有助于及早发现问题并优化资源使用。
5.8.1 系统信息
bash
# 显示系统信息
docker info
# 显示 Docker 版本
docker version
# 显示系统资源使用统计
docker system df
# 显示容器资源使用情况
docker stats [CONTAINER...]1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
5.8.2 系统清理
bash
# 清理未使用的资源
# --volumes: 同时清理数据卷
# -a: 清理所有未使用的资源
docker system prune [OPTIONS]
# 示例:清理所有未使用的资源
docker system prune -a --volumes1
2
3
4
5
6
7
2
3
4
5
6
7
系统清理影响
docker system prune -a 会删除所有未使用的镜像、容器和数据卷。生产环境使用前请确认不会影响运行中的服务。